package nsu.edu.zsq.service.sys;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.multipart.MultipartFile;

import com.github.pagehelper.PageInfo;

import nsu.edu.zsq.bean.Course;
import nsu.edu.zsq.param.PageQuery;

/** 
* Description: 学校课程的service类<br>
*/
public interface CourseService {
    
    /**
     * 通过课程id获取一个课程信息
     * @param courseId 课程id
     * @return Course
     */
    public Course getCourse(int courseId);
    
    /**
     * 获取专业的tree数据，一级节点存院系，二级存专业
     * @return List<SchOrgWithMajor>
     */
    public String listSchOrgWithMajorTree();
    
    /**
     * 通过专业代码获取带有分页信息的课程列表
     * @param majorNo 专业代码
     * @param pageQuery 分页数据
     * @return PageInfo<Course>
     */
    public PageInfo<Course> listCourseWithPage(String majorNo, PageQuery pageQuery);
    
    /**
     * 获取公共选修课列表
     * @param pageQuery 分页数据
     * @return PageInfo<Course>
     */
    public PageInfo<Course> listPublicWithPage(PageQuery pageQuery);
    
    /**
     * 从excel文件中导入课程信息
     * @param excelFile 上传的excel文件
     */
    public void importCourseFromExcel(MultipartFile excelFile);
    
    /**
     * 导出专业数据到excel文件 
     * @param response 请求
     */
    public void exportCourseToExcel(HttpServletResponse response);
    
    /**
     * 保存批量课程
     * @param listCourse 课程列表
     */
    public void saveBatchCourse(List<Course> listCourse);
    
    /**
     * 删除单个课程信息
     * @param courseId 课程id
     */
    public void deleteCourse(int courseId);
    
    /**
     * 删除批量课程信息
     * @param courseId 课程id数组
     */
    public void deleteBatchCourse(int[] courseId);
    
    /**
     * 添加一条课程信息
     * @param course 课程信息
     */
    public void saveCourse(Course course);
    
    /**
     * 更新一条课程信息
     * @param course 课程信息
     */
    public void updateCourse(Course course);

}
